package com.zb.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zb.entity.SelectVo;
import com.zb.entity.ZjStoreType;
import com.zb.vo.StoreTypeListSelectVo;
import com.zb.vo.StoreTypeVo;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 仓储类型表 服务类
 * </p>
 *
 * @author WEN
 * @since 2024-01-06
 */
public interface ZjStoreTypeService extends IService<ZjStoreType> {

    /**
     * 默认保存仓库出入库类型
     * @param custAccId 商家ID
     */
    void saveDefaultStoreType(Long custAccId);

    /**
     * 新增或修改仓库类型
     * @param custAccId
     * @param storeTypeVo
     */
    void save(Long custAccId, StoreTypeVo storeTypeVo);

    /**
     * 获取仓库类型列表
     * @param custAccId 商家ID
     * @param selectVo 搜索条件
     * @return
     */
    Map<String, Object> getList(Long custAccId, StoreTypeListSelectVo selectVo);

    /**
     * 根据仓库类型ID获取详情
     * @param id 仓库类型ID
     * @return
     */
    StoreTypeVo getDetail(Long id);

    /**
     * 批量启用或禁用仓库类型
     * @param ids 仓库类型ID集合
     * @param status 仓库类型状态：false-启用，true-禁用
     */
    void updateDisableBatchById(List<Long> ids, Boolean status);

    /**
     * 批量删除仓库类型
     * @param ids 仓库类型ID
     */
    void deleteBatchById(List<Long> ids);

    /**
     * 出库仓库类型下拉列表查询
     * @param custAccId 商家ID
     * @param type 类型：1-入库，2-出库
     * @param selectVo 搜索条件
     * @return
     */
    Map<String, Object> outStoreTypePageSelect(Long custAccId, Integer type, SelectVo selectVo);

    /**
     * 根据商家ID获取默认出库工单配件的类型ID
     * @param custAccId 商家ID
     * @return
     */
    Long getOutStoreOrderSpareTypeIdByCustAccId(Long custAccId);

    /**
     * 根据商家ID获取默认入库工单配件的类型ID
     * @param custAccId 商家ID
     * @return
     */
    Long getInStoreOrderSpareTypeIdByCustAccId(Long custAccId);

    /**
     * 根据ID获取出入库类型
     * @param ids
     * @return
     */
    List<ZjStoreType> getNameByIds(List<Long> ids);
}
